package com.sm.service;

import com.sm.entity.Role;
import com.sm.entity.UserInfo;
import org.omg.PortableInterceptor.INACTIVE;
import org.springframework.security.core.userdetails.UserDetailsService;

import java.util.List;

public interface UserRoleService extends UserDetailsService {
//查找

    /**
     * 根据uid查询员工信息
     * @param uid 员工ID
     * @return 员工个人信息
     * @throws Exception 所有异常
     */
    public UserInfo findByUid(Integer uid)throws Exception;

    /**
     * @return 返回所有公司员工（不包括已离职的）
     * @throws Exception 所有异常
     */
    public List<UserInfo> findAllUserByStatus()throws Exception;

    /**
     * @param username 员工用户名
     * @return 员工跟人信息
     * @throws Exception 所有异常
     */
    public UserInfo findByUsername(String username)throws Exception;

    /**
     * @return 当前所有的权限信息
     * @throws Exception 所有异常
     */
    public List<Role> findAllRole()throws Exception;

    /**
     * @param uid 要修改员工的id
     * @return 已有的权限
     * @throws Exception 所有异常
     */
    public List<Role> findUserRole(Integer uid)throws Exception;

    //添加
    /**
     * @param userInfo 要添加的员工
     * @param admin 要添加的权限数组
     * @throws Exception 所有异常
     */
    public void addUser(UserInfo userInfo,Integer[] admin)throws Exception;

    //更新
    /**
     * @param userInfo 要更新的员工
     * @throws Exception 所有异常
     */
    public void updateUser(UserInfo userInfo)throws Exception;

    /**
     * @param userInfo 要更新的员工 包含密码
     * @throws Exception 所有异常
     */
    public void updatePassword(UserInfo userInfo)throws Exception;


    /**
     * 先删除所有权限，再添加权限，权限不能为空
     * @param uid 被修改员工id
     * @param rids 要添加的权限
     * @throws Exception 所有异常
     */
    public void updateUserStatus(Integer uid,Integer[] rids)throws Exception;

    //删除
    /**
     * @param uid 要辞退的员工 只是将状态设置为0
     * @throws Exception 所有异常
     */
    public void deleteUser(Integer uid)throws Exception;


    /**
     * @param name 模糊查询的姓名
     * @return 返回查到的集合
     * @throws Exception 所有异常
     */
    public List<UserInfo> searchUser(String name) throws Exception;

    /**
     * @param uid 根据id查询用户信息
     * @return 返回查到的集合
     * @throws Exception 所有异常
     */
    public UserInfo searchUserByUid(Integer uid) throws Exception;
}
